%-----------------------------------------------------------------------------
\chapter{Stand der Technik}
%-----------------------------------------------------------------------------


%-----------------------------------------------------------------------------
\section{IT-Informationssicherheit} 
%-----------------------------------------------------------------------------
Computersysteme gelten als sicher wenn die Sicherheit der darin
gespeicherten Informationen von der der sie verwaltenden Informationstechnologie
(IT) gewährleistet werden kann und wird. Diese sogenannte
IT-Informationssicherheit muß durch die Einhaltung der drei folgenden
grundlegenden Zielsetzungen erreicht werden: 


\begin{itemize}
  \item Integrität
  \newline 
  Informationen dürfen nur von den vorgesehenen Personen und Prozessen verändert
  werden,
  \item Vertraulichkeit
  \newline  
  Informationen dürfen nur für die vorgesehenen Personen und Prozesse offen
  gelegt werden,
  \item Verfügbarkeit
  \newline  
  Informationen müssen für die vorgesehenen Personen und Prozesse bereitgestellt
  sein, wenn diese sie benötigen \cite[S. 14]{gs-leitfaden} \cite[S.
  38]{oesiha}.
\end{itemize}





\section{Steuerbefehle}
%todo Kein Zugang zu dl.acm.org keine cites
Steuerbefehle unterscheiden sich zu normalen textuellen BenutzerInneneingaben
bei Computersystemen darin, dass sie das verarbeitende Programm dazu veranlassen
bestimmte, mit dem Steuerbefehl verbundene unter Umständen weitreichende
Aktionen auszuführen. Die textuellen Benutzereingaben werden daher nicht nur als
Information interpretiert. Welche beispielsweise wie bei Chatprogrammen an anderer Stelle an
weitere BenutzerInnen wieder ausgegeben werden soll. Sondern als Steuerbefehl
welcher bestimmte Aktionen ausführen soll. Unterschiedliche Programme bedienen
sich dabei unterschiedlichster Steuerbefehle. Der Text "`exit"' eingegeben in eine
interaktive Linux Commandshell bewirkt beispielsweise das Beenden des
Commandshell Programmes. Eingegeben in ein Chatprogramm bewirkt er jedoch nur
das Anzeigen des Textes bei anderen BenutzerInnen. Wohingegen die Eingabe des
Textes "`:-)"' in eine Linux Commandshell zu keiner Aktion, mit Ausnahme der
Ausgabe eines Fehlers, jedoch in den meisten Chatprogrammen zur Anzeige eines
Icons führt.


\section{Internetsuchmaschinen}
%todo Evenutell auf Internet Suchmaschinen umbenenn wenn dann bei gesamter
% Arbeit
Internetsuchmaschinen, oft auch nur Suchmaschinen genannt, bezeichnen Dienste
welche große Teile des öffentlich zugänglichen World Wide Webs durchsuchen und
die so gewonnen Informationen - textuelle Inhalte, Adressen der durchsuchten
Ressourcen, Schlagworte usw. usf. - in eigens dafür konzipierten Datenbanken
indizieren und vorhalten. Dies zum Zweck um interaktiv und online BenutzerInnen
die gezielte Suche und das Auffinden von bestimmten Informationen unter
ausschließlicher Verwendung eines einzelnen Onlinedienstes zu ermöglichen.


\subsection{Verschiedene Suchmaschinenanbieter}
%todo
Es gibt verschiedene Betreiber/Anbieter von Internetsuchmaschinen. Laut Daten
des Onlinestatistikanbieters "`http://statcounter.com"' dominiert der Anbieter
Google den Internetsuchmaschinenmarkt zum gegenwärtigen Zeitpunkt mit einem
Anteil von ca. 90 \% aller Suchanfragen von BenutzerInnen. Gefolgt von den
KonkurrentInnen Bing und Yahoo im einstelligen Prozentbereich \cite{stat},
(siehe Abb.~\ref{stat}).


\begin{figure}[htbp]
    \centering
    \includegraphics [width=12cm,angle=0] {figures/StatCounter-search_engine-ww-monthly-201302-201401-bar.jpg}
    \caption{Top 5 Suchmaschinen nach Anteil an BenutzerInnenanfragen im
    Zeitraum Februar 2013 bis Jänner 2014}
    \label{stat}
\end{figure}


Daher beschränkt sich die vorliegende Arbeit primär mit der führenden
%todo Achtung Ergebnisse usw. usf. Im Zweifellsfall ausschliesslich Google
%Wobei so diese ...  
AnbieterIn Google. Sowie mit den AnbieterInnen Bing und Yahoo so diese bessere
Möglichkeiten in Bezug auf das Suchmaschinenhacking anbieten.




\subsection{Übergabe von Steuerbefehlen}
%todo
Sowohl der Suchmaschine der AnbieterIn Google \cite{so-google}, als auch der
AnbieterIn Bing \cite{so-bing} sowie auch der AnbieterIn Yahoo \cite{so-yahoo}
können Steuerbefehle bei der Suchbegriffeingabe übergeben werden.



\section{Hacking}
%todo cite
Der Begriff des Hackings ist nicht eindeutig definiert \cite{wikipedia-hacking}.
In der vorliegenden Arbeit wird das Wort Hacking daher auschließlich in dem
Sinne verwendet und interpretiert dass versucht wird unter ausschließlicher
Verwendungen von Computersystemen 
\begin{itemize}
  \item 
  die Integrität und/oder 
  \item
  die Vertraulichkeit und/oder
  \item
  die Verfügbarkeit von Informationen 
\end{itemize}
in anderen Computersystemen und damit die Maßnahmen zur
Erhaltung der IT-Informationssicherheit ebendieser zu verringern bzw. zu
überwinden.



\section{Search Engine Hacking}
"`Search Engine Hacking involves using advanced operator-based searching to
identify exploitable targets and sensitive data using the search engines"'
\cite{infosec}.



\section{Google Hacking im Speziellen}

In diesem Kapitel werden grundlegende Techniken für das Suchmaschinenhacking in
Bezug auf die Suchmaschine "`google"' aufgezeigt werden.


\subsection{Verzeichnislisten}

Bei dieser Attacke werden Dateien und Verzeichnisse im Browser angezeigt
anstelle der üblichen grafischen Webseiten. \cite[S. 16]{ghglong}

\begin{figure}[htbp]
    \centering
    \includegraphics [width=12cm,angle=0] {figures/directory_list.PNG}
    \caption{Verzeichnislistenbeispiel}
    \label{directlist}
\end{figure}

Verzeichnislisten werden oft auf Webservern plaziert, damit die Besucher die
Dateien und Verzeichnisse direkt anschauen bzw. downloaden können.
In vielen Fällen kommt es jedoch vor, das Verzeichnislisten nicht beabsichtigt
sind. Eine fehlerhafte Konfiguration der Webserver kann dazu führen, dass bei
einer fehlenden Hauptwebseite oder Indexseite die Verzeichnisliste angezeigt
wird. Dadurch können Hacker interessante Informationen erhalten \cite[S.
16]{ghglong}

Mit Google sind Verzeichnislisten sehr leicht zu ermitteln. Wie man in der
Abbildung \ref{directlist} sieht, beginnen Verzeichnislisten meistens mit "Index
of". Um nun Verzeichnislisten zu ermitteln sollte nun folgende Befehle im google
abgesetzt werden: 
\begin{center}
\begin{quote}

intitle:index.of "parent directory" \newline
oder \newline
intitle:index.of name size  \cite[S. 16]{ghglong}
\end{quote}
\end{center}

Mit diesen Befehlen erhält man Verzeichnislisten mit den oft
vorkommenden Schlüsselwörtern 'Name', 'Size' oder 'Parent Directory"'. \cite[S.
17]{ghglong}
\newline
\textbf{Wie kann diese Technik verwendet werden? }
\newline

Verzeichnislisten bieten Hacker eine einfache Möglichkeit durch Seiten zu
navigieren. Auf der Suche nach sensiblen oder interessanten Informationen kann
das Surfen durch eine Liste von Dateien und Verzeichnissen eine viel
effizentiere Möglichkeit sein, als über die Weboberfläche. 

Weiters kann es Hacker als Startpunkt für weiter Hacking Attacken dienen, 
zum Beispiel wenn man dadurch die Web Server Version erhält. 

Die genaue Version eines Webservers ist eine wichtige Information für den Hacker
um erfolgreiche Angriffe gegen den Webserver durchzuführen.

\begin{figure}[htbp]
    \centering
    \includegraphics [width=12cm,angle=0] {figures/index_of_serverat.PNG}
    \caption{Verzeichnisliste "server.at" Beispiel}
    \label{server.at}
\end{figure}

Wie die Abbildung \ref{server.at} zeigt eine typische Zeile am Ende einer
Verzeichnisliste. Sie beinhaltet den Namen der Server Software wie auch die
Version. \cite[S. 17]{ghglong}

Das Beispiel wurde mittels dem Befehl \begin{quote} intitle:index.of
server.at\end{quote} gefunden. Mit dieser Suche wird auf den Text 'server.at'
am Ende der Verzeichnisliste abgezielt. 

Weiters kann diese Suche erweitert werden um nur bestimmte Webserver zu finden,
wie z.B. mit site:apple.com

Es gibt aber auch die Möglichkeit nach bestimmten Servern mit einer bestimmten
Version zu suchen. Dies erfolgt zum Beispiel über folgende Suchabfrage: 

\begin{center}
\begin{quote}
intitle:index.of Apache/2.2.9 Server.at
\end{quote}
\end{center}


\textbf{Schlussfolgerung }
\newline

Diese Technik hat die Limitierung, dass das Ziel zumindest eine Seite haben
muss, die eine Verzeichnisliste erstellt und zusätzlich die Serverversion am
Ende der Verzeichnisliste anzeigt. Es gibt einige fortgeschrittenere Techniken
die man einsetzen kann, wenn die Serverversion am Ende der Seite fehlt. Diese
Technik beinhalten eine 'Profiling' Technik, die sich auf Title, Überschriften
und Gesamtformatierung der Verzeichnisliste fokusiert ist um Hinweise über die
Serverversion zu erhalten.\cite[S. 18]{ghglong}



\subsection{Dokumente und Datenbanken erforschen} 
Im Internet gibt es Dokumente im Überfluss. Dabei können die Guten, aber auch
die Bösen die Informationen in diesen Dokumenten gleichermaßen nach Gutdünken
verwenden. 

Ein Beispiel stellen Konfigurationsdateien dar. Sie speichern spezifische
Programmeinsstellungen, können aber auch Benutzernamen und Passwörter enthalten.
Vielmehr aber kann ein Angreifer oder Sicherheitsexperte solche Dateien nutzen,
um Einsicht in die Bedienung eines Programmes und einen Überblick über die
Funktionsweise des Systems zu bekommen. Schon die kleinsten Informationshäppchen
könnten für einen Angreifer von Interesse sein. \cite[S. 136]{googlehacking}

Google ist nicht in der Lage nach Metadaten zu suchen. Betrachten wir ein
Word-Dokument so is man also nicht in der Lage nach Informationen wie Author,
Firma etc. zu suchen.\cite[S. 122]{long2008google}

\subsubsection{Konfigurationsdateien}
Konfigurationsdateien sind für Angreifer sehr wichtig, da sie wertvolle
Informationen enthalten können. Aus diesen
Informationen erhoffen sich die Angreifer die Funktionsweise eines
Programms, Systems oder Netzwerks herauslesen zu können.

\begin{figure}[htbp]
    \centering
    \includegraphics [width=12cm,angle=0] {figures/Unbenannt.jpg}
    \caption{WS\_ FTP-INI Datei}
    \label{wsftp}
\end{figure}

Die Abbildung \ref{wsftp} zeigt eine Konfigurationsdatei, welche vom
FTP-Clientprogramm WS\_ FTP verwendet wurde. Solche Konfigurationsdateien kann
man sich einfach mit dem Suchbegriff: "`filetype:ini inurl:ws\_ftp"' auf
Google anzeigen lassen. In so einer Datei stehen also Information wie Passwort,
Username und der Pfad, welche vom Benutzer verwendet werden um sich mit dem WS\_FTP-Client
auf einem FTP-Server zu verbinden. Normalerweise sind die Passwörter
verschlüsselt, jedoch können sich mithilfe von Programmen gecrackt werden, falls
die Passwortkomplexität schwach ist.
\cite[S. 123]{long2008google}
Das vorige Beispiel zeigt nur einer der vielen Möglichkeiten, welche von den
Anfgreifern ausgenutzt werden. Bei "`Google Hacking"' ist es wichtig, dass man
im Vergleich zu normalen Suchanfragen andere effektivere Operatoren wie
"`inurl"', "`filetype"', "`intitle"'\ldots verwendet und sie auch miteinander kombiniert um das 
gewünschte Ziel zu erreichen. 
Die Anfrage "`"login: *" "password: *" filetype:xls"' sucht beispielsweise nach Excel-Files
mit Passwörtern während folgende Anfrage: "`"index of /" ( upload.cfm | upload.asp | upload.php |
upload.cgi | upload.jsp | upload.pl)"' Uploads Skripts ausfindig macht.\newline
Es ist also wichtig, dass man seine Daten schützt und
solche Art von Angriffen nicht unterschätzt nur weil sie einfach durchzuführen
sind. Außerdem sind Cracker immer sehr kreativ,solche
Sicherheitslücken zu finden um an den Daten zu gelangen. Oft ist die
Information, dass eine bestimmte Konfigurationsdatei überhaupt existiert für
einen Angreifer ausreichend, da man damit assoziieren kann, dass das
dazugehörige Programm, welche möglichweise eine Sicherheitslücke aufweist, sich
irgendwo auf dem Rechner oder auf einem anderen benachbarten Rechner im
Netzwerk befindet.\cite[S. 124]{long2008google}


\subsubsection{LOG - Dateien}
Logdateien sind auch ein beliebtes Ziel der Angreifer, da sie sensible Daten wie
Online-Banking- und Firmen-Zugänge, Sozialversicherungs-Nummern,
Kreditkarten-Nummern, IP-Adresse, Usernamen, Passwörter\ldots enthalten können. 
Ähnlich wie bei den Konfigurationsdateien gibt es Standard-Schlagwörter, welche
man für die Suche von Log-Dateien verwenden kann. Logdateien haben meistens das
Wort "`log"' als Dateierweiterung und daher werden einfache  Kombinationen wie
"`filetype:log inurl:log"' oder "`ext:log log"' als Such-Schlagwörter auf der
Suchmaschine eingeben um nach öffentlichen Log-Dateien zu suchen.\cite[S.
130]{long2008google}\newline
Weitere Beispiele können sie aus der Abbildung \ref{wsftp} entnehmen. 

\begin{figure}[htbp]
    \centering
    \includegraphics [width=12cm,angle=0] {figures/Unbenannt2.jpg}
    \caption{Logdateien-Suchbeispiele}
    \label{log}
\end{figure}

\subsubsection{Office Dokumente}
Durch die Popularität und Ausbreitung von Office-Programmen wie Microsoft Word,
,Microsoft Excel, Microsoft Access\ldots ist es natürlich nicht verwunderlich,
dass die meisten Benutzer solche Programme verwenden um sensible Daten
abzuspeichern.\cite[S. 134]{long2008google}\\
Während der Ausarbeitung dieser Arbeit ergab sich, dass
Excel-Dateien häufig verwendet werden um Benutzerinformationen wie Username,
E-Mail und Passwörter zu speichern. Dabei haben wir ähnliche Kombinationen von
Schlagwörter - wie schon im Kapitel "`Konfigurationsdateien"' beschrieben -
verwendet um Excel-Dateien ausfinding zu machen. Die Abbildung \ref{office}
zeigt ein paar einfache jedoch sehr effektive Beispiele.

\begin{figure}[htbp]
    \centering
    \includegraphics [width=12cm,angle=0] {figures/Unbenannt3.jpg}
    \caption{Schlagwortkombinationen um sensible Office-Dokumente zu finden}
    \label{office}
\end{figure}

\subsubsection{Datenbank}
In letzter Zeit sind  Web-basierte
Datenbankapplikatonen insbesondere Front-End Applikationen(z.B. Datenbank Login
Portale z.B. phpMyAdmin) mit Datenbankinterfaces dahinte ein beliebted Ziel. In
der Regel wird ein Angreifer nicht die Google-Suche nutzen um in Datenbanken
einzubrechen, sondern vielmehr versuchen nach geleakten Datenbankinformationen
von potenziellen verwundbaren Server zu suchen.
Diese Informationen können dann im zweiten Schritt genutzt werden um einen Ziel
auszuwählen und einen Angriff auszuführen.
\cite[S.134]{long2008google}\newline
Nicht nur Login Portale, sondern auch "`Support Files"'
"`Error Messages"' oder "`Database Dumps"' können wichtige Informationen über
die dazugehörige Datenbank für die Angreifen liefern. Während "`Support Files"'
Konfigurationsdateien über Datenbanken enthalten können, ist es auch wichtig,
dass das Error Handling richtig gemacht wurde.
\cite[S.137ff]{long2008google}
Ein Missbrauch/Fehler kann entstehen indem man vergisst Fehler zu behandeln
oder man Fehler so behandelt, dass sie zu viele Informationen verraten. 
Von "`Database Dumps"' spricht man von Dateien, welche  alle
Daten einer Datenbank (Tabellen und deren Inhalte) enthält und zur
Sicherung oder zur Übertragung der Daten in eine andere Datenbank erstellt wird.
Durch diese Informationen ist es dem Angreifer möglich die komplette Datenbank
nachzubauen.\cite[S.139ff]{long2008google}\newline




% Andreas: eventuell werden die folgenden Kapitel nicht mehr benötigt, da schon
% genug Inhalt vorhanden ist --> korrekturlesen und ergänzen
% wenn wirklich noch nötig, dann die folgenden Kapitel einarbeiten


\subsection{Google zur Informationssammlung}

Während eines konventionellen Penetrationstests geht es darum,
Sicherheitsmaßnahmen zu umgehen, um sich Zugang zu vertraulichen Informationen
verschaffen. Ebenso lassen sich Inormationen zusammentragen, in dem kleinere
Inormationshäppchen zusammengefügt werden. Das gilt nicht für alle
Informationen und zudem ist die Wahrscheinlichekit, dass man ein vertrauliches
Dokument in Google findet eher gering, aber durch stundenlanges exzessives
Datensammeln kann man sich gute Informationen aus öffentlichen Quellen
beschaffen. \cite[S. 173]{googlehacking}

Der Prozess des Auffindens von Informationen kann in folgende Bereiche
unterteilt werden:


\begin{itemize}
  \item 
  Definieren eines Suchbegriffes
  \item
  Erweitern des ursprünglichen Suchbegriffes
  \item
  Daten von der Datenquelle abholen
  \item
  Daten analysieren und untersuchen
  \item
  Verarbeitung der Daten, um Informationen zu extrahieren
\end{itemize}[S. 176]{googlehacking}

Mit dieser Methode kann Google sehr gut zur Informationsbeschaffung herangezogen
werden. D.h. ein Angreifer kann sich zum Beispiel im Vorhinein bereits ein sehr
gutes Gesamtbild über sein Ziel machen und eventuelle Vorkehrungsmaßnahmen
treffen. Die Vorbereitung kann zum Beispiel die Wahl des richtigen
Angriffsprogrammes, der geeignete Exploit aus einer Exploitdatenbank sein, aber
auch schon Passworte oder Benutzernamen die für einen Angriff womöglich von
Bedeutung sein könnten.

\subsection{Sicherheitsabfragen}
 
Für Sicherheitsabfragen werden in diesem Kapitel 3 Beispiele beleuchtet:

\begin{itemize}
  \item 
	login 
  \item
	password
  \item
  	username
\end{itemize}


Das Login-Portal ist in anderen Worten gesagt, die Vordertür zu einer Webseite.
Login-Seiten können die Software und das Betriebsystem eines Ziels offenlegen
und in vielen Fällen gibt es auf der Login-Seite sogar eine Dokumentation,
welche zur Informationsbeschaffung dienen kann. Die Dokumentation vom
Login-Protal listet oft sogar E-Mail-Adressen, Telefonnummern oder URLs von
Mitarbeitern auf, die einem Benutzer z.B. im Falle des Passwortvergessens helfen
können.

Um nun in der Praxis über Google Login-Seiten finden zu können, wird einfach der
folgende Suchbegriff in das Suchfeld eingegeben:


\textit{login | logon}


Damit lassen sich auf einfachste Weise Login-Seiten und somit Angriffsziele
finden. Darüberhinaus ist auch die Phrase


\textit{login | trouble} 


sehr gängig. Damit soll Benutzern geholfen werden, welche sich aus dem System
ausgesperrt haben, bzw. ihr Passwort vergessen haben, aber auch
Penetration-Tester und Angreifer können diese Informationen abrufen.

Eine Suche nach Benutzernamen kann mit der folgenden Suchanfrage einfach
durchgeführt werden:


\textit{site:<z.B.: eine bestimmte Seite angeben> username | employee | "`your
username"'}


Zwar sagt die bloße Existenz des Wortes username in einem Suchtreffer nichts
über eine vorhandene oder mögliche Schwachstelle aus, aber die Ergebnisse dieser
Anfrage stellen einen guten Ausgangspunkt für einen Angreifer dar.

Weiters ist auch das Wort password oder Passwort relevant für die
Sicherheitsabfragen. Das Wort kommt sehr oft im Internet vor und es wäre sinnlos
nur nach password zu suchen. Vielmehr sollte ein Penetration-Tester mit dem
site-Operator davor auf einer bestimmten Site suchen. Die Abfrage hierzu könnte
wie folgt aussehen:


\textit{site:<eine bestimmte Site angeben> password | passcode | "`Your password
is:"`}


Zwar mit dieser Abfrage werden selten richtige Passwörter gefunden, aber auf
alle Fälle finden sich Passwortrichtlinien, oder Informationen über die
Erstellung von Passwörtern für eine Seite wieder. Mit diesen Informationen ist
es in weiterer Folge leichter, Passwörter zu erraten oder gezielte Brute-Force
Attacken durchzuführen.\cite[S. 285-287] {googlehacking}



% \subsection{Benutzernamen, Passwörter} 
% // TODO Johannes












